package com.controller;

import java.io.FileWriter;
import java.io.IOException;
import java.nio.file.Paths;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class LoggerUtil {

    // 定义日志文件存储的目录，可以根据需要调整为你想使用的目录
    private static final String LOG_DIRECTORY = "C:\\日志信息";

    /**
     * 将日志内容追加写入到指定目录下，以当前日期为文件名的文件中。
     * 文件名为当前日期，格式为yyyy-MM-dd.log。
     *
     * @param logContent 日志的内容
     */
    // 日志文件名格式：yyyy-MM-dd.log
    private static final DateTimeFormatter fileNameFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
    // 时间戳格式：yyyy-MM-dd HH:mm:ss -
    private static final DateTimeFormatter logTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

    /**
     * 将带有时间戳的日志内容追加写入到指定目录下，以当前日期为文件名的文件中。
     *
     * @param logContent 日志的内容
     */
    public static void appendLog(String logContent, String logPlace) {
        // 获取当前日期，用于生成文件名
        String fileName = LocalDateTime.now().format(fileNameFormatter) + ".log";
        // 构造文件完整路径
        String filePath = Paths.get(LOG_DIRECTORY, fileName).toString();

        // 获取当前时间戳
        String timeStamp = LocalDateTime.now().format(logTimeFormatter);
        // 组合时间戳和日志内容
        String logEntry = "";
        if (logPlace.equals("学习站被访问了")) {
            logEntry = "==================================================>>>" + System.lineSeparator() + timeStamp + "：" + "(" + logContent + " " + logPlace + ")";
        } else if (logPlace.equals("播放了")) {
            logEntry = timeStamp + "：" + "(" + logPlace + ")" + "歌曲 === SongInformation【" + logContent + "】";
        } else if (logPlace.equals("查询了评论")) {
            logEntry = timeStamp + "：" + "(" + logPlace + ")" + " === SongId【" + logContent + "】";
        } else if (logPlace.equals("评论了")) {
            logEntry = timeStamp + "：" + "(" + logPlace + ")" + "歌曲 === CommentInformation【" + logContent + "】";
        }

        // 写入日志内容，使用追加模式
        try (FileWriter fileWriter = new FileWriter(filePath, true)) {
            fileWriter.write(logEntry + System.lineSeparator()); // 添加换行符以便于阅读
        } catch (IOException e) {
            System.err.println("写入日志时发生错误：" + e.getMessage());
        }
    }
}
